C++ 如何在for(或while)循环中用字符填充字符串,c++;

C++ 如何在for(或while)循环中用字符填充字符串,c++;,c++,function,dev-c++,C++,Function,Dev C++,所以,我一直在写一个程序,将两个罗马数字相加,并输出罗马数字的和。我运行的问题是,检查结果的东西只是读取第一个输出字母,而不是整个输出 这让我想到了如何用字符(或长度为1的字符串)填充字符串。我会这样做: #include <iostream> int main() { std::string str{" "}; for (int i = 0; i < 5; ++i) { str[i] = 'A'; } std::cout

所以,我一直在写一个程序,将两个罗马数字相加,并输出罗马数字的和。我运行的问题是,检查结果的东西只是读取第一个输出字母,而不是整个输出

这让我想到了如何用字符(或长度为1的字符串)填充字符串。我会这样做:

#include <iostream>

int main() {
    std::string str{" "};

    for (int i = 0; i < 5; ++i) {
        str[i] = 'A';
    }

    std::cout << str;
}
#包括
int main(){
std::string str{”“};
对于(int i=0;i<5;++i){
str[i]=“A”;
}
标准::cout=1000){
s[i]=“M”;
总和-=1000;
++一,;
}
而(总和>=500){
s[i]=“D”;
总和-=500;
++一,;
}
而(总和>=100){
s[i]=‘C’;
总和-=100;
++一,;
}
而(总和>=50){
s[i]=“L”;
总和-=50;
++一,;
}
如果(总和=19){
s[i]=“X”;
++一,;
s[i]=“i”;
++一,;
s[i]=“X”;
++一,;
总和-=19;
}
而(总和>=10){
s[i]=“X”;
++一,;
}
如果(总和=19){
s[i]=“X”;
++一,;
s[i]=“i”;
++一,;
s[i]=“X”;
++一,;
总和-=19;
}
如果(总和=9){
s[i]=“i”;
++一,;
s[i]=“X”;
++一,;
总和-=9;
}
而(总和>=5){
s[i]=‘V’;
++一,;
}
如果(总和=4){
s[i]=“i”;
++一,;
s[i]=‘V’;
++一,;
总和-=4;
}
而(总和>=1){
s[i]=“i”;
++一,;
}
对于(int i=0;i>s;
整数和;
int prev_检查;
int l=s.长度();
//循环查找我们刚刚输入的字符串中的字母,并将其“解析”为正常数字(阿拉伯语)形式
对于(int i=0;i0){
prev=s[i-1];
上一次检查=a(上一次);
如果(上一次检查<1000){
总和-=上一次检查*2;
//你可能会想,为什么是两次?
//因为我已经把这封信加到我的总数里了,
//所以我必须从总和中减去两次
}
}
}
//有趣的事实-在罗马字母中不存在像IM(999)这样的数字,只有C、X和V是“可减的”
//然而,我仍然在所有字母中添加了这种“减法”,只是因为我懒得输入特定的字母来调试我的“减法”函数
如果(字母=“D”){
总和+=500;
如果(i>0){
prev=s[i-1];
上一次检查=a(上一次);
如果(上一次检查<500){
总和-=上一次检查*2;
}
}
}
如果(字母==“C”){
总和+=100;
如果(i>0){
prev=s[i-1];
上一次检查=a(上一次);
如果(上一次检查<100){
总和-=上一次检查*2;
}
}
}
如果(字母==“L”){
总和+=50;
如果(i>0){
prev=s[i-1];
上一次检查=a(上一次);
如果(上一次检查<50){
总和-=上一次检查*2;
}
}
}
如果(字母=“X”){
总和+=10;
如果(i>0){
prev=s[i-1];
上一次检查=a(上一次);
如果(上一次检查<10){
总和-=上一次检查*2;
}
}
}
如果(字母==“V”){
总和+=5;
如果(i>0){
prev=s[i-1];
上一次检查=a(上一次);
如果(上一次检查<5){
总和-=上一次检查*2;
}
}
}
如果(字母==“I”){
总和+=1;
}
}
//然后…出去

cout下面的代码可能有助于输出5'A'

#include <iostream>
#include <vector>

int main() {
    std::vector<char> val;

    for (int i = 0; i < 5; ++i) {
        val.push_back('A');
    }

    for (int a = 0; a < val.size(); ++a)
    {
        std::cout << val[a];
    }
}
#包括
#包括
int main(){
std::向量val;
对于(int i=0;i<5;++i){
val.push_back('A');
}
对于(int a=0;astd::难道你不能仅仅通过索引访问字符串的任何部分,除非其中有某些内容。空字符串没有任何内容,带空格的字符串只有一个元素。访问外部的任何内容都是未定义的行为。例如,你可以只做
s+='I';
。你写的内容中隐藏了一个很好的问题。我将它移到了在你的问题的顶部,这样更容易找到。实际上,你可以删除横线后的所有内容,因为你的实际问题不需要这个上下文。我将把它留给你。(不过,你有一个重点突出的问题是很好的。很多人没有投入那么多精力。)
std::cout
#include <iostream>
#include <vector>

int main() {
    std::vector<char> val;

    for (int i = 0; i < 5; ++i) {
        val.push_back('A');
    }

    for (int a = 0; a < val.size(); ++a)
    {
        std::cout << val[a];
    }
}