【问题标题】:Space is not shown空格未显示
【发布时间】:2014-03-15 17:55:15
【问题描述】:

你好,我对 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。 任何帮助将不胜感激,这只是代码的一部分。

【问题讨论】:

    标签: c++ space


    【解决方案1】:

    std::cout 用空格分隔单词(通常),您可以改用std::getline

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

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

    【讨论】:

    • 我正在检查里面的一些特定字符,但不幸的是我现在不能发布整个代码
    【解决方案2】:

    cin&gt;&gt; 只取单词直到遇到\0

    cin.getline(name of string, string size) 取字直到遇到\n

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

    因此,在您的代码中,您使用了cin&gt;&gt;,这使您的程序只使用一个单词,并且不会超过这个单词。
    尝试改用cin.getline(name of string, size of string),这将使您的代码相应地工作。

    【讨论】:

    • 好吧,我对 c++ 和一般编码有点陌生,这为我清除了一些东西,非常感谢。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      当您使用cin&gt;&gt; 运算符时,它采用空格分隔的字符串的第一个标记。因此,说:

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

      ... 与

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

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

      std::getline( cin, input );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 2011-12-16
        • 1970-01-01
        • 2017-01-14
        • 1970-01-01
        • 2020-06-11
        • 2016-03-29
        相关资源
        最近更新 更多