gpt4 book ai didi

C++ Cin 输入到数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:26 36 4
gpt4 key购买 nike

我是 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/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com