gpt4 book ai didi

c++ - 读取带有反斜杠 (\) 分隔符的输入文件 c++

转载 作者:行者123 更新时间:2023-11-30 00:54:01 25 4
gpt4 key购买 nike

我的输入文件是这样的:

C:\Users\DeadCoder\AppData\Local\CoCreate

我正在制作一棵树,我需要在使用 \ 分隔符从输入文件中读取时提取目录名称。像上面的例子,我需要分别抽象c:, users, DeadCoder, Appdata ....希望大家看懂问题。现在让我们看看我们得到的选项。

1- istringstream 适用于 whitespace 但不适用于 \

2- strtok() 适用于字符。所以我必须将我的字符串更改为 char,我真的不想这样做。

3- Boost Tokenizer() 这个看起来很有趣,我过去对它并不熟悉,只是我刚才用谷歌搜索了一下。我复制了代码,它是这样的:

#include <boost/foreach.hpp>
#include <boost/tokenizer.hpp>
using namespace boost;

int main(){

string tempStr;
ifstream fin;
fin.open("input.txt");
int i=0;

while (!fin.eof()){
getline(fin,tempStr);
char_separator<char> sep("\"); // error: missing terminating " character
tokenizer<char_separator<char>> tokens(tempStr, sep);
for (const auto& t : tokens) {
cout << t << "." << endl;
}
}

现在这给出了错误 "error: boost/foreach.hpp: No such file or directory" 有人可以帮我吗?还有其他更好的方法来使用\delimiter读取输入文件吗?请不要使用像 class tokenizer() 这样的大量代码,因为我还在学习 C++。

编辑:我没有安装 boost 库,因此我遇到了这个错误。如果有人可以在不安装第三个库的情况下解释更好的 tokenize 字符串的方法,那将是非常有帮助的。

最佳;死代码。

最佳答案

在 C++(和其他基于 C 的语言)中,字符串或字 rune 字中的 \ 字符是 escape 字符。这意味着它转义文字中的下一个字符。这样一来,您就可以在字符串中包含一个 "。要在字符串文字中包含一个 \,您需要使用两个来转义反斜杠他们:“\\”

您可以阅读有关 C++ 中有效转义序列的更多信息,例如in this reference .


至于Boost的问题,你需要告诉编译器你安装它的地方。这是在您的 IDE 的项目属性中完成的。


如果您想使用第三方库(例如 Boost)来标记化,有几种方法。一种方法是使用 std::istringstreamstd::getline .另一个使用 findsubstr标准 string 类的函数。

关于c++ - 读取带有反斜杠 (\) 分隔符的输入文件 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029465/

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