字符串拼接
使用 **ostream**
的 **<<**
运算符实现
int main() {
std::ostringstream oss;
oss << "hello" << " " << "world";
std::cout << oss.str();
}
// output: hello world
字符串数字相互转换
使用 **istream**
的 **>>**
操作符实现
该方法的说明:
- 方法会「贪婪」地从流中提取内容,直到提取失败
- 提取时会忽略后续的空格,换行符等
- 如果提取失败,会将
iostat
设置为failbit
(似乎是),可以通过clear()
方法将iostate
恢复为goodbit
使用示例:
int main() {
float f;
std::stringstream ss{"123 456 \n\r\t 78.89 . 111"};
while (ss >> f)
std::cout << f << std::endl;
}
// output: 123 456 78.89
使用 **string**
来实现
int main() {
// 字符串转化为数字
int num = std::stoi("233");
std::cout << num << std::endl;
// 数字转化为字符串
std::string str = std::to_string(233);
std::cout << str << std::endl;
}
字符串切分
使用 **std::getline**
来实现getline(input_stream, output_str, delim_char)
的参数分别表示:
input_stream
是要从中读取内容的流output_string
是存放输出结果的字符串delim_char
是分割字符,默认是「换行符**widen('\n')**
」- 返回:返回
input_stream
本身
这个函数的作用是:从「流」中取出字符串,直到遇到了「delim_cahr
」为止。
使用示例:将字符串按照.
进行切分
int main() {
std::stringstream ss{"192.168.1.1"};
std::string str;
while (std::getline(ss, str, '.'))
std::cout << str << std::endl;
}
// output: 192 168 1 1
使用 **string**
的 **find**
和 **substr**
实现
示例代码:
int main() {
std::string s = "hello--world";
std::string delim = "--";
auto start = 0U;
auto end = s.find(delim);
while (end != std::string::npos) {
std::cout << s.substr(start, end - start) << std::endl;
start = end + delim.length();
end = s.find(delim, start);
}
std::cout << s.substr(start, end);
}