gpt4 book ai didi

c++ - 修改 cin 以也返回换行符

转载 作者:行者123 更新时间:2023-11-30 01:27:33 26 4
gpt4 key购买 nike

我知道 getline() 但如果 cin 可以在遇到时返回 \n 就好了。

有什么方法可以实现这个(或类似的)?

编辑(示例):

string s;
while(cin>>s){
if(s == "\n")
cout<<"newline! ";
else
cout<<s<<" ";
}

输入文件txt:

hola,          em dic pere
caram, jo també .

最终结果应该是这样的:

hola, em dic pere newline! caram, jo també .

最佳答案

如果您正在阅读单独的行,您知道每个阅读行后都有一个换行符。好吧,除了文件中的最后一行不需要用换行符分隔即可成功读取,但您可以通过检查 eof() 来检测是否有换行符:如果std::getline() 成功但 eof() 已设置,最后一行不包含换行符。显然,这需要使用 std::getline()std::string 版本:

for (std::string line; std::getline(in, line); )
{
std::cout << line << (in.eof()? "": "\n");
}

这应该在读取时将流写入 std::cout

问题要求输出数据,但换行符转换为“换行符!”。您可以通过以下方式实现:

for (std::string line; std::getline(in, line); )
{
std::cout << line << (in.eof()? "": "newline! ");
}

如果您不关心流被拆分成行,而实际上只想获取整个文件(包括所有换行符),您可以将流读入 std::string :

std::string file((std::istreambuf_iterator<char>(in)),
std::istreambuf_iterator<char>());

但是请注意,这种确切的方法可能相当慢(尽管我知道它可以变得更快)。如果您知道该文件不包含某个字符,您还可以使用 std::getline() 将整个文件读入一个 std::string:

std::getline(in, file, 0);

以上代码假定您的文件不包含任何空字符。

关于c++ - 修改 cin 以也返回换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765218/

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