空间没有显示

Space is not shown

本文关键字:显示 空间      更新时间:2023-10-16

你好,我有一个c++中的空格问题,检查这个

char inp[10000];
char outp[10000];
int i;
cin >> inp;
for(i=0;i<=strlen(inp);i++)
{
  outp [i] = inp[i];
  cout << outp[i];
}

所以如果我运行这个并键入:Hello stackoverflow输出将是:Hello。任何帮助将不胜感激,这只是代码的一部分。

std::cout用空格分隔单词(通常),您可以使用std::getline代替。

std::getline(std::cin, inp);

并且,最好将std::string用于字符串而不是字符数组。

cin>>只取单词,直到遇到

cin.getline(name of string, string size)取单词,直到遇到n

-空字符,它存在于每个连续字母的字符串中。
n -换行字符,当一行结束时出现,(一行通常由80个字符组成)。

所以,在你的代码中,你使用了cin>>,这使得你的程序只接受一个单词,而不是更多。
尝试使用cin.getline(name of string, size of string),这将使您的代码正常工作

首先,为什么使用字符数组而不是std::string ?使用字符串要干净得多,除非你有很好的理由使用字符数组。其次,如果您想要读取可变数量的单词并单独保存每个单词(看起来您可能正在尝试这样做),请尝试如下:

std::string output[10000];
std::string inp;
int i = 0;
while (cin >> inp){
   output[i] = inp;
   i++;
}

这将读取所有单词并将每个单词存储在output的单独索引中。希望这对你有帮助!

当您使用cin>>运算符时,它接受由空格分隔的字符串的第一个令牌。因此,说:

cin >> input; // where input is "hello 12 years"

…与

完全相同
std::getline( cin, input, ` `);

要获得用户在控制台中输入的整个"句子",您必须使用不带separator参数的std::getline:

std::getline( cin, input );