c++ - 为什么我的字符串在此代码中被修改?

标签 c++ string

<分区>

我将一个整数作为字符串 s 的输入。我想以“-”和“|”的形式在 s 中写入整数。我确信我的逻辑是正确的。问题是字符串 s 在代码中自动被修改。当我最初打印字符串 s 时,它返回完整的 12345(我的输入是“2 12345”),但是当我之后尝试打印它时,它被截断了。我该如何解决这个问题?

#include <iostream>
#include <string>
using namespace std;
int main(){
    int n;
    std::string s;
    cin >> n;
    cin >> s;
    cout << s.at(3) <<endl;
    while(n!=0){
        for (int l=0;l<3+2*n;l++){
            //  for (int i=0;i<s.length();i++){
            if (l==0){
                for (int j=0;j<s.length();j++){
                    if (s.at(j)=='1'||s.at(j)=='4'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << " ";
                    }
                    else if (s.at(j)=='0'||s.at(j)=='2'||s.at(j)=='3'||s.at(j)=='5'||s.at(j)=='6'||s.at(j)=='7'||s.at(j)=='8'||s.at(j)=='9'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << "-";
                        }
                        cout << " ";
                    }
                    cout << " ";
                } 
            }

            else if (l==n+1){
                for (int j=0;j<s.length();j++){
                    if (s.at(j)=='1'||s.at(j)=='7'||s.at(j)=='0'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << " ";

                    }
                    else if (s.at(j)=='2'||s.at(j)=='3'||s.at(j)=='4'||s.at(j)=='5'||s.at(j)=='6'||s.at(j)=='8'||s.at(j)=='9'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << "-";

                        }
                        cout << " ";
                    }
                    cout << " ";
                }
            }
            else if (l==2*n+2){
                for (int j=0;j<s.length();j++){
                    if (s.at(j)=='1'||s.at(j)=='4'||s.at(j)=='7'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << " ";
                    }
                    else if (s.at(j)=='0'||s.at(j)=='2'||s.at(j)=='3'||s.at(j)=='6'||s.at(j)=='8'||s.at(j)=='9'||s.at(j)=='5'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << "-";
                        }
                        cout << " ";
                    }
                    cout << " ";
                }
            }
            else if ((l>0) && (l<n+1)){
                for (int j=0;j<s.length();j++){
                    if (s.at(j)=='1'||s.at(j)=='2'||s.at(j)=='3'||s.at(j)=='7'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << "|";
                    }
                    else if(s.at(j)='4'||s.at(j)=='8'||s.at(j)=='9'||s.at(j)=='0') {
                        cout << "|";
                        cout << "s "<< s<< endl;
                        cout << "check 2";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << "|";
                    }
                    else if(s.at(j)=='5'||s.at(j)=='6'){
                        cout << "|";
                        cout << "check";
                        for (int k=0;k<n;k++){
                            cout <<" ";
                        }
                        cout << " ";

                    }
                    cout << " ";
                }
            }
            else if ((l>n+1) && (l<2*n+2)){
                for (int j=0;j<s.length();j++){
                    if (s.at(j)=='1'||s.at(j)=='3'||s.at(j)=='5'||s.at(j)=='7'||s.at(j)=='9'||s.at(j)=='4'){
                        cout << " ";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << "|";
                    }
                    else if(s.at(j)='6'||s.at(j)=='8'||s.at(j)=='0') {
                        cout << "|";
                        for (int k=0;k<n;k++){
                            cout << " ";
                        }
                        cout << "|";
                    }
                    else if(s.at(j)=='2'){
                        cout << "|";
                        for (int k=0;k<n;k++){
                            cout <<" ";
                        }
                        cout << " ";
                    }
                    cout << " ";
                }
            }
            cout << s << endl;
            cout << endl;
}
            cin >> n;
            cin >> s;

        }
    }

最佳答案

else if(s.at(j)='4'||

您忘记了 = 符号。

关于c++ - 为什么我的字符串在此代码中被修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704992/

相关文章:

javascript - Node.js:文件读取并将字符串作为数组放入数组

c++ - 我如何知道哪个QTcpSocket发出了readyRead()信号?

c++ - Gdb。程序集生成文件中的标志 -g 不起作用

c++ - 在qt中创建插件

c++ - 根据参数数量从函数返回结构对象并将其分配给一般结构的对象

php - 为什么带单引号的字符串在插入数据库时​​会引发错误?

C++动态字符串数组

javascript - 切换字符串等效的 bool 值

sql - 带字符串的 TSQL 数据透视

c++ - vector 的高效移动