gpt4 book ai didi

c++ - C++ (Linux) 中的字符串连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:03 26 4
gpt4 key购买 nike

我想在 C++ 中连接三个字符串。

我有一个 vector std::vector<std::string> my_list存储文件名的位置。我想为每个文件名添加目录和文件扩展名,以便从文件中读取二进制信息,所以我这样做:

for (int i = 0; i < my_list.size(); i++) {
std::string tmp = prefix + my_list[i] + suffix;
std::ifstream file(tmp.c_str(), std::ifstream::binary);
}

其中 prefix 是 std::string prefix = "directory/"和 suffix 是 std::string suffix = ".foo"。

它适用于 Windows。但是它在 Linux 中不起作用。后缀覆盖“tmp”字符串。看起来像 foo/y_file_timestamp而不是 out/my_file_timestamp.foo .

我应该怎么做才能防止这种覆盖?

最佳答案

错误不在您向我们展示的代码中。

问题是您的字符串中包含意外字符,特别是 回车符 ('\r') 会导致插入符号返回到行首在将连接的字符串输出到终端窗口期间。

据推测,这是由于粗心地解析带有 Windows 样式行尾的输入数据而导致的问题。您应该规范化您的数据,并确保在解析过程中去除所有行结束变体。

遇到字符串操作问题时,一定要在字符级别检查字符串的内容。

关于c++ - C++ (Linux) 中的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895498/

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