В C++ я создал новую строку (строковый класс), скопировав символы index wise из другой строки (string class), которая была уже инициализирована.C++ строка, сформированная путем копирования указательных мудрых символов из другой уже инициализированной строки. Не удалось напечатать новообразованную строку с помощью cout
Но я не могу напечатать эту новую строку на экране с помощью cout
. Использование c_str()
Я могу распечатать его, используя cout
. Но не c_str()
необходимо только при использовании printf()
, потому что ему нужна строка типа c?
#include <cstring>
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int i;
string a,b;
cin>>a;
for(i=0;a[i]!='\0';i++){
b[i]=a[i];
}
cout<<b;
return 0;
}
EDIT: Спасибо за помощь! Но я, возможно, не был вполне ясен в своем вопросе, так что это основные проблемы, которые у меня есть. PLease прочитал следующее, и если бы вы могли помочь мне дальше, это было бы здорово! (Кроме того, я понимаю, что b=a;
- это самый простой способ назначить, но я пытаюсь понять строки и, следовательно, вопрос.)
a) Я не знаю, когда строка cpp имеет завершение нулем, а когда нет, но в этом случае строка после инициализации была завершена нулем, потому что цикл закончился и закончился после последнего символа строки a, потому что при выходе из цикла и выполнении cout<<a[i];
печатается последний chararcter of a.
b) Внутри цикла после присвоения, когда я включаю cout<<b[i];
, он распечатывает значение, которое, как мы ожидали, было присвоено только b [i]. Таким образом, b [i] существует по какой-то нечетной причине.
c) Вне цикла for, в конце программы, когда я cout<<b[2];
, он печатает третий символ строки. И если я делаю cout<<b.c_str();
, он печатает всю строку. Его только если я делаю cout<< b;
, что ничего не печатается. Почему это?
СТАНД :: строка не является (!), Оканчивающихся нулем C-строка Это может или не может содержать символ «\ 0» (даже в середине), –
... ваш цикл неправильно –
Вы mistyped 'b = a;'. – LogicStuff