如果字符串不超过 20 个字符并且在 C++ 中可以包含空格,您将如何读取它?例如我有这种文件:
3
Namama 4 5 12
Cool 4 2 34
Not So Cool 4 2 45
我想用最基本的方式来写它。在这种情况下,我宁愿只使用 C++(没有 C 的东西)。这意味着我想将它存储在 std::string 中。
我可以使用istream::get或istream::getline但我必须避免使用换行符。这是有问题的(我正在编写的代码将向初学者展示)。
你对这个问题有什么解决方案?
编辑:
如被问及,我将告诉您我尝试过的方法,但我认为这不会有任何好处。我不是 C++ 初学者,通常我会使用istream::get和 char 数组之类的东西,但是对于某些人来说,删除换行符可能看起来太技术了。
所以......使用istream::operator>>读取 char 数组或std::string失败,因为当他们看到空格字符时它会停止读取(我可能必须阅读几个单词)。这意味着以下代码失败:
char name[21];
std::cin >> name;
或者...
std::string name;
std::cin >> name;
另一件事是换行符因系统而异,实际上 Windows 默认使用其中两个,我尝试在 Windows 上使用istream::ignore和 2 作为参数,这是忽略新行的唯一方法,我得出的结论是,这是因为 Windows 使用两个字符作为换行符。这意味着它不能在 Linux 上运行,而且它必须更复杂......再次 - 对初学者不利。