【发布时间】:2014-03-15 20:12:28
【问题描述】:
只是一个简单的问题。在读取文本文件并寻找换行符以替换为其他内容时,可以简单地查找 '\n' 吗?还是应该寻找 ascii 值?
我需要做的,澄清是在文本文件中找到新行,如果只有一个,则删除它们,如果连续有两个或多个,我需要添加一个字符串来代替它们(总是比新行的数量少一)。
我对如何做到这一点有一个很好的想法,但我想知道如何在任何给定行的末尾查找换行符来替换它?
在伪代码中(我不相信你应该需要我的任何实际代码来解决这样的问题)它会是:
if (line[x] & line [x+1] = 换行){ 用这个代替 } else if (line[x] = new line){ 消除 }
【问题讨论】:
-
'\n'是 ASCII 值。根本不清楚你的问题是什么。显示一个测试用例。 -
@LightnessRacesinOrbit 这不是我遇到的问题,只是一个问题。我确信它的 ASCII 值是 0xA。
-
如果您使用 getline() 从文件中获取行,则换行符将被提取并丢弃,因此无法在字符串中找到。可以将整个文件读入“std::stringstream ss;”对象,在一行代码中。这将在 ss 中保留换行符,然后您可以使用 std::string::find() 查找“\n”或“\n\n”等。
-
@CristianC.: 0xA 和
'\n'仅在类型上不同,在值上没有区别。事实上,这意味着'\xA'和'\n'是完全 相同的文字。\n被定义为这个意思。将其视为一个方便的常量。 -
'\n' == 0xA(只要您的执行字符集兼容 ASCII)。