gpt4 book ai didi

c++ - 读取文件时宏定义的有效方法?

转载 作者:行者123 更新时间:2023-11-28 02:54:40 25 4
gpt4 key购买 nike

问题描述:

我想要这个效果。我正在使用 C++ 读取输入文件。我想以这种方式设计我的输入文件:

....blahblah.....
Define Length 20
Node ($Length 0.1 0.1)
....blahblah.....

因此 $Length 将自动替换为 20。

我正在考虑更一般的情况:比如给定一个任意字符串

Node ($strLengthUnknown 0.1 0.1)

我会先将整个字符串拆分成单词,然后查找是否有某些单词以 $ 符号开头,然后进行替换。

我的问题:

我想知道有没有更聪明的方法?我不想重新发明轮子。因此,如果您知道已经有更好的方法/库可以做到这一点,请告诉我。谢谢

最佳答案

你可以拆分字符串——这个问题已经被问过很多次了: Split a string in C++?然后,您可以搜索单词并进行替换。

但是,更简单的方法是搜索“$”符号并检查“$”之前的前一个字符是否不属于单词 - 在您的示例中为空格或括号。我不了解您文件的全部语法,但在我们寻找以字母开头的标识符的情况下,检查“$”之后的下一个字符就足够了。

    string x = "Node ($Length 0.1 0.1)";
size_t len = x.length();
size_t pos = 0;
while((pos = x.find("$",pos)) != string::npos) {
if(pos == 0 || isspace(x[pos-1]) || x[pos-1] == '(') {
if(pos != (len -1) && isalpha(x[pos+1])) {
//find the length of word, starting from pos
//do the replacement, update pos
x.replace(pos,word_length,string_to_replace);
pos += word_length;
} else {
++pos;
}
} else {
++pos;
}
}

关于c++ - 读取文件时宏定义的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277845/

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