我是 c++ 的初学者,我想将一个字符串作为一个字符一个字符地输入到一个数组中,这样我就可以实现一个反向函数。但是与 C 不同的是,当输入被击中时,'\n' 没有被插入在流中..如何停止输入数据?
我的代码是:
#include<iostream>
#include<array>
#define SIZE 100
using namespace std;
char *reverse(char *s)
{
array<char, SIZE>b;
int c=0;
for(int i =(SIZE-1);i>=0;i--){
b[i] = s[c];
c++;
}
return s;
}
int main()
{
cout<<"Please insert a string"<<endl;
char a[SIZE];
int i=0;
do{
cin>>a[i];
i++;
}while(a[i-1]!= '\0');
reverse(a);
return 0;
}
最佳答案
当您逐个字符读取时,它实际上读取的是字符,换行符被视为空白字符。
此外,数组永远不会作为 C 风格的字符串终止,这不是读取字符的工作方式。这意味着你的循环条件是错误的。
首先,我建议您开始使用 std::string
作为您的字符串。您仍然可以逐个字符地阅读。要继续,您需要实际检查您阅读了哪些字符,并在阅读换行符后结束阅读。
最后,您的reverse
函数不起作用。首先循环本身是错误的,其次你返回了指向原始字符串的指针,而不是“反转”数组。
为了帮助您阅读,可以这样做
std::string str;
while (true)
{
char ch;
std::cin >> ch;
if (ch == '\n')
{
break; // End loop
}
str += ch; // Append character to string
}
请注意,真正需要的并不多,如 the answer by Stack Danny 所示。 .即使是我上面的代码也可以简化,同时仍然一次读取一个字符。
关于C++ Cin 输入到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898918/