我在一个类中有这两个函数和一个变量:
int _identation = 0;
std::string ident(){
_identation++;
return "";
}
std::string newLine(){
std::string text = "\n";
for(int i = 0; i < _identation; i++){
text+="\t";
}
return text;
}
ident()函数只是增加一个变量并返回std :: string(仅是为了允许我与字符串内联使用)。
函数newLine()使用char'\ n'创建新行,并放置_identation'\ t'使下一行递增。
我现在是否与问题相关,但是我正在使用某种访客设计模式。我尝试在我的代码上执行此操作:
std::string content = "<page>"+ident()+newLine();
但是碰巧我的编译器使newLine()函数首先运行并且仅在调用ident()函数之后运行。因此,如果要在创建新行之前标识代码,则必须使用以下表达式:
std::string content = "<page>"+newLine()+ident();
为什么C ++从右侧到左侧读取此行?我还用Java编写了这个精确的程序,并且JVM从左到右执行了该表达式。
谢谢 :)
最佳答案
尝试以不同的方式执行它们。
std::string content = "<page>";
content+ident();
content+newLine();