切断焦炭的结尾*

dis*_*ney 1 c++ string

所以我有一个char*.我想在最后切断一些.所以

char *sentence = "My name is Ted";
Run Code Online (Sandbox Code Playgroud)

我该如何切断泰德.我可以把它变成一个字符串,然后使用子字符串(来自Java,这就是我去的方法)但是id而不是那样做.但我不知道怎么用char*来做.

编辑:进一步的问题.问题出在一个函数中,它接受一个进程并且意味着在该进程启动时返回该位置.多数民众赞成我可以得到它.但是参数char*procLocation是通过引用传递的,因此该位置将被发送回那里.

我只能获取包含进程名称的位置.我想切断流程的名称,只返回位置.我已经尝试将该位置设为字符串并执行子字符串(字符串 - processName的长度).没关系.但

procLocation = location.c_str(); // where location.substr is the location - the process name
Run Code Online (Sandbox Code Playgroud)

回复错误:错误C2440:'=':无法从'const char*'转换为'char*'

Luc*_*ore 10

由于这是一个字符串文字,您无法修改它.

如果你这样做:

char sentence[] = "My name is Ted";
Run Code Online (Sandbox Code Playgroud)

你可以简单地之前设置的字符Ted\0.

你可能会更好用std::string.

  • 我不同意你的SHOULD声明的强制性 (3认同)

das*_*ght 5

您可以使用std::string复制较少字符的构造函数而不是切断文字char*:

const char *data = "Hello, Ted!";
string s(data, data+8);
cout << s << endl;
Run Code Online (Sandbox Code Playgroud)

这打印 Hello, T

这种方法比制作std::string和获取子串更少浪费.