You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中提取换行符\n之前的字符串?

C++提取换行符前的字符串内容

给你两种简单靠谱的实现方式:

方法一:使用string的find和substr成员函数

这是最直接的原生字符串操作方式,不需要额外依赖流类:

#include <string>
#include <iostream>

int main() {
    std::string s = "Hello Hi Hey\nBye Bye good night";
    // 查找第一个换行符的位置
    size_t newline_pos = s.find('\n');
    std::string result;
    if (newline_pos != std::string::npos) {
        // 截取从开头到换行符之前的子串
        result = s.substr(0, newline_pos);
    } else {
        // 如果字符串里没有换行符,直接取整个字符串
        result = s;
    }
    std::cout << result << std::endl; // 输出:Hello Hi Hey
    return 0;
}

find('\n')会返回换行符第一次出现的索引,如果没找到换行符就返回std::string::npos,这时候直接返回原串即可。

方法二:用stringstream配合getline

你之前觉得stringstream不行是因为用了默认的空格分割读取(比如iss >> result),但换用std::getline就能完美解决:

#include <string>
#include <sstream>
#include <iostream>

int main() {
    std::string s = "Hello Hi Hey\nBye Bye good night";
    std::istringstream iss(s);
    std::string result;
    // getline默认以换行符为分隔符,会读取到换行前的所有内容(包括空格)
    std::getline(iss, result);
    std::cout << result << std::endl; // 输出:Hello Hi Hey
    return 0;
}

std::getline会从字符串流中读取字符,直到遇到换行符为止,并且不会包含换行符本身,完美保留空格。

内容的提问来源于stack exchange,提问作者PHANTOM DRAGON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:48:18