我正在尝试从 char* 中提取“\r”字符之前的所有字符。
下面的代码似乎不起作用。我原以为它会打印“java,c++”,但我只是得到一个空字符串作为输出。
char* testString = "java,c++\r\npython,go\r\n";
char* carriageReturn = strchr(testString, '\r');
*carriageReturn = '\0';
char* firstLine = strdup(testString);
*carriageReturn = '\r';
std::cout << firstLine;
完成我想做的事情的正确方法是什么?
最佳答案
您想搜索 \r
,它是回车,而不是 r
,它只是英文字母表中的字母 r。
此外,为什么要使用 C 字符串,当有 std::string
时? C++是字符串类。
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string testString = "java,c++\r\npython,go\r\n";
std::string::size_type found = testString.find("\r");
if(found != std::string::npos)
cout << testString.substr(0, found) << endl;
else
cout << "String did not contain any carriage return!" << endl;
return 0;
}
输出:
java,c++
关于c++ - 从 char* 中提取 '\r' 之前的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57018713/