c++ - 从 char* 中提取 '\r' 之前的所有字符

标签 c++ string

我正在尝试从 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/

相关文章:

c++ - 动态链接是如何工作的,它的用法以及你如何以及为什么要制作一个 dylib

python - 在字符串中同时使用一个反斜杠和引号

android - 如何获取word中的特殊字符及其点击事件

c++ - 为什么只有指向函数的指针而不是函数的var?

string - 根据一组文档的相似性对句子进行排名的最佳方法

python - 如何修复此 "TypeError: ' str' 对象不可调用“错误?

Java:替换字符串中的字符

c++ - 上课需要内存吗?

C++ - 对话框问题

c++ - 如何使用修饰键组合?