gpt4 book ai didi

c++ - 从字符串中修剪空格

转载 作者:IT老高 更新时间:2023-10-28 21:53:56 29 4
gpt4 key购买 nike

我知道在 Java 和 C 中有几种很好的方法可以做到这一点,但在 C++ 中我似乎无法找到轻松实现字符串修剪功能的方法。

这是我目前拥有的:

string trim(string& str)
{
size_t first = str.find_first_not_of(' ');
size_t last = str.find_last_not_of(' ');
return str.substr(first, (last-first+1));
}

但每当我尝试打电话时

trim(myString);

我得到编译器错误

/tmp/ccZZKSEq.o: In function `song::Read(std::basic_ifstream<char, 
std::char_traits<char> >&, std::basic_ifstream<char, std::char_traits<char> >&, char const*, char const*)':
song.cpp:(.text+0x31c): undefined reference to `song::trim(std::string&)'
collect2: error: ld returned 1 exit status

我正在尝试找到一种简单而标准的方法来从字符串中修剪前导和尾随空格而不占用 100 行代码,我尝试使用正则表达式,但无法使其正常工作。

我也无法使用 Boost。

最佳答案

您的代码很好。您看到的是链接器问题。

如果您将代码放在这样的单个文件中:

#include <iostream>
#include <string>

using namespace std;

string trim(const string& str)
{
size_t first = str.find_first_not_of(' ');
if (string::npos == first)
{
return str;
}
size_t last = str.find_last_not_of(' ');
return str.substr(first, (last - first + 1));
}

int main() {
string s = "abc ";
cout << trim(s);

}

然后执行 g++ test.cc 并运行 a.out,你会看到它有效。

您应该检查包含 trim 函数的文件是否包含在编译过程的链接阶段。

关于c++ - 从字符串中修剪空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829143/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com