Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何让代码以赢得';Don’不要删掉这些词(字符串)?_C++_Procedural Programming - Fatal编程技术网

C++ 如何让代码以赢得';Don’不要删掉这些词(字符串)?

C++ 如何让代码以赢得';Don’不要删掉这些词(字符串)?,c++,procedural-programming,C++,Procedural Programming,该程序的目标应该是生成输出字符串,以便: 输出字符串+之间的空格==宽度 弦未被切断。所以,它给出了每行完整的单词 这就是我到目前为止所做的: int main() { int width= 15; vector<string> line; line.push_back("Hello"); line.push_back("My"); line.push_back("Name"); line.push_back("Is"); li

该程序的目标应该是生成输出字符串,以便:

  • 输出字符串+之间的空格==宽度
  • 弦未被切断。所以,它给出了每行完整的单词
  • 这就是我到目前为止所做的:

    int main()
    {
        int width= 15;
        vector<string> line;
        line.push_back("Hello");
        line.push_back("My");
        line.push_back("Name");
        line.push_back("Is");
        line.push_back("John");
    
        auto s = line.front();
        for (auto i = std::size_t {1}; i < line.size(); ++i) s += ' ' + line[i];
    
    
        for (size_t i = 0; i < s.length(); i+=width+1)
        {
            s.insert(i,"\n");
        }
    
        cout<<s;
    
    }
    
    intmain()
    {
    整数宽度=15;
    矢量线;
    行。向后推(“你好”);
    行。向后推(“我的”);
    行。推回(“名称”);
    行。推回(“Is”);
    行。推回(“约翰”);
    自动s=line.front();
    对于(auto i=std::size_t{1};icout你所做的是在已经形成的字符串中插入新行,因此可能会将一个单词切割成新行

    如果在添加另一个单词之前插入一个新词,那么最好检查字符串的长度是否会超过行的所需宽度

    这就是我能想到的

    int main()
    {
        int width= 15;
        vector<string> line;
        line.push_back("Hello");
        line.push_back("My");
        line.push_back("Name");
        line.push_back("Is");
        line.push_back("John");
    
        std::string s {};
        for (int i {0}; i < line.size(); ++i)
            {
                if( (s + line[i] + " ").size() <= width)
                {
                    s += line[i] + " ";
                }
                else
                {
                    s += "\n" + line[i] + " ";
                    width += width;
                }
            }
        cout<<s;
    }
    
    intmain()
    {
    整数宽度=15;
    矢量线;
    行。向后推(“你好”);
    行。向后推(“我的”);
    行。推回(“名称”);
    行。推回(“Is”);
    行。推回(“约翰”);
    std::字符串s{};
    对于(int i{0};i如果((s+行[i]+“”)的.size()我不太清楚,您希望它打印“你好,我的名字是约翰”和“约翰”在一个新的行上吗?您是否试图使句子适合控制台宽度?也许这就是您要找的: