如果字符串中有空格,String.size() 返回不正确的数字

新手上路,请多包涵

我正在尝试编写一个返回字符串中字符数的程序。在编写程序时,我注意到字符串类中有一个错误。

说我的程序是这样的:

 #include <iostream>
#include <string>
using namespace std;

int main()
{
   string input;

   cout << "Input string: ";
   cin >> input

   cout << "Number of characters: " << input.size() << endl;

   return 0;
}

如果我的输入是 Test String ,我应该看到数字 11 作为输出。

但是,我得到的输出是这样的:

 Number of characters: 4

当字符串中有空格时,size() 方法似乎不起作用。

我的问题是,是否有另一种方法来获取字符串中的字符数?我尝试了 length() 方法,但结果是一样的。

原文由 pandascope 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
1 个回答

那是因为你的

cin >> input;

最多只能读取第一个空白字符。如果要获取整行,请使用以下代码:

 std::string s;
std::getline(std::cin, s);

原文由 jsadfeew 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题