C++ 剪掉 std::string 的一部分并分配另一个

C++ cut out part of std::string and assign another one

提问人:javierMarquez 提问时间:5/13/2023 更新时间:5/13/2023 访问量:218

问:

我想获取 std::string 的一部分,将该部分分配给另一个空的 std::string,然后从原始字符串中删除该部分。我想知道如何在一行中做到这一点?

有没有字符串方法可以做这样的事情?->

std::cout << oldStr; // "Hello world!";

std::string newStr = oldStr.someMethod("Hello");

std::cout << newStr; // "Hello"
std::cout << oldStr; // " world!"
C++ 字符串 std

评论

0赞 Sam Varshavchik 5/13/2023
以下是我如何处理这个问题。第 1 步:转到我最喜欢的 C++ 参考站点。第 2 步:开始阅读 的方法,一个接一个,寻找一个可以做到这一点的方法。基于此,很容易确定是否有“任何字符串方法可以做类似的事情”。字符串方法不是什么根深蒂固的秘密,只有少数精英C++大师知道。它们都在多个参考站点上公开记录。std::basic_string
1赞 user4581301 5/13/2023
嗯,让我们来看看......。看起来不像,那么算法库呢?看起来有很多两步选项,但没有多合一的解决方案。
1赞 Jerry Coffin 5/13/2023
使用 SNOBOL。oldStr pattern . newStr =

答:

3赞 Shuhul Mujoo 5/13/2023 #1

如果您知道确切的字符串,则可以使用 substring 方法substr

std::string oldStr = "Hello world!";

std::cout << oldStr << std::endl; // "Hello world!"

std::string newStr = oldStr.substr(0, 5);
oldStr = oldStr.substr(6);
    
std::cout << newStr << std::endl; // "Hello"
std::cout << oldStr << std::endl; // " world!"

评论

0赞 user4581301 5/13/2023
注意:您可以放弃 .默认情况下,读取到 ., 11substrstring
1赞 Pete Becker 5/13/2023
此代码中的任何内容都不需要额外的内容。 结束一行。std::endl’\n’
1赞 Remy Lebeau 5/13/2023
如果目标子字符串不在原始字符串的前面,则需要使用而不是删除它:erase()substr()std::string newStr = oldStr.substr(index, length); oldStr.erase(index, length);