C++ printf("%s" , string) 给我非常奇怪的输出
C++ printf("%s" , string) is giving me very strange output
我正在尝试使用 printf 为我的字符串添加颜色,例如
printf("\x1B[92m%d3[0m", value1);
这对我来说对整数没问题,但是当我尝试做类似
的事情时
printf("\x1B[92m%s3[0m", wantedString);
我得到一些随机的东西,比如,(°√,有什么帮助吗?
这是整个函数
void searchFileFor(path const& files, string wantedString) {
ifstream inFile;
string currentString;
int lineNumber = 0;
bool foundNothing = true;
for (auto file : recursive_directory_iterator(files)) {
lineNumber = 0; // Reset after each new file
inFile.open(file);
while (inFile >> currentString) {
lineNumber++;
if (currentString.find(wantedString) != string::npos) {
cout << file << " " << wantedString << " " << lineNumber << '\n';
foundNothing = false;
}
//cout << file << " " << currentString << endl;
}
inFile.close();
}
if (foundNothing == true) {
cout << "We were not able to find: " << wantedString << "";
printf("\x1B[92m%s3[0m", wantedString);
}
//cout << "Wanted String: " << wantedString;
}
对于 printf
你需要一个 C 风格的字符串。使用 wantedString.c_str()
.
Printf()
是一个 C 函数,C++ 只能访问它以实现遗留代码兼容性。但是不推荐在C++中使用。
您遇到的问题是您正在向它传递一个 string
对象,这是 printf()
无法打印的对象。从 string
C++ 对象到 char *
指针没有任何关系。
不过你很幸运。 string
(string::c_str()
) 中有一个方法可以使用,如
printf("\x1B[92m%s3[0m", wantedString.c_str());
我正在尝试使用 printf 为我的字符串添加颜色,例如
printf("\x1B[92m%d3[0m", value1);
这对我来说对整数没问题,但是当我尝试做类似
的事情时printf("\x1B[92m%s3[0m", wantedString);
我得到一些随机的东西,比如,(°√,有什么帮助吗?
这是整个函数
void searchFileFor(path const& files, string wantedString) {
ifstream inFile;
string currentString;
int lineNumber = 0;
bool foundNothing = true;
for (auto file : recursive_directory_iterator(files)) {
lineNumber = 0; // Reset after each new file
inFile.open(file);
while (inFile >> currentString) {
lineNumber++;
if (currentString.find(wantedString) != string::npos) {
cout << file << " " << wantedString << " " << lineNumber << '\n';
foundNothing = false;
}
//cout << file << " " << currentString << endl;
}
inFile.close();
}
if (foundNothing == true) {
cout << "We were not able to find: " << wantedString << "";
printf("\x1B[92m%s3[0m", wantedString);
}
//cout << "Wanted String: " << wantedString;
}
对于 printf
你需要一个 C 风格的字符串。使用 wantedString.c_str()
.
Printf()
是一个 C 函数,C++ 只能访问它以实现遗留代码兼容性。但是不推荐在C++中使用。
您遇到的问题是您正在向它传递一个 string
对象,这是 printf()
无法打印的对象。从 string
C++ 对象到 char *
指针没有任何关系。
不过你很幸运。 string
(string::c_str()
) 中有一个方法可以使用,如
printf("\x1B[92m%s3[0m", wantedString.c_str());