строка — C ++ сделать нижнюю функцию

Я написал простую функцию на c ++, чтобы превратить строку во все строчные буквы, используя символы и повторяя каждый символ в строке. Может кто-нибудь объяснить, почему, когда я запускаю эту программу в окне консоли, я получаю вывод в дополнение к исходному вводу, если функция никогда не ссылается на cout.

#include <iostream>
#include <cctype>
#include <cstdlib>
using namespace std;
string makelower(string text)
{
int iter = 0;
char cha;
string newtext;
while (iter < text.length())
{
cha = text[iter];
cha = tolower(cha);
newtext+=cha;
iter++;
}
return(newtext);
}

int main()
{
string a;
cin>>a;
a = makelower(a);
cout<<a;
}

0

Решение

Путчар пишет персонажа в стандартный вывод
http://www.cplusplus.com/reference/cstdio/putchar/

4

Другие решения

Есть несколько проблем с вашим кодом. Пожалуй самый
Важным является то, что вы не определили, что вы подразумеваете под преобразованием
в нижнем регистре; это не всегда так очевидно, как кажется. Тем не мение:

  • Для перебора символов в строке вы используете итераторы, и вы
    тест на конец; в C ++ 11 вы можете использовать цикл на основе диапазона.

  • Аргумент к форме единственного аргумента tolower должен иметь значение
    между 0 и UCHAR_MAX; если у тебя есть charэто нормально
    достигается путем преобразования его в unsigned char,

  • Если вы хотите вернуть строку, вы должны добавить символы к
    это как вы их конвертируете; Кроме того, вы можете сделать изменения на месте
    имея makelower возьмите неконстантную ссылку. Я бы порекомендовал
    бывший.

Принимая все это во внимание:

std::string
makeLower( std::string const& original )
{
std::string results;
for ( unsigned char ch : text ) {
results += std::tolower( ch );
}
return results;
}

Чтобы использовать эту функцию, вы вызываете ее с помощью строки и инициализируете
другая строка с ее результатами, или назначить ее на строку. Или просто использовать
это в выражении, где вам нужна строка.

std::string line;
while ( std::getline( std::cin, a ) && !line.empty() ) {
std::cout << makeLower( a ) << std::endl;
}
1

putchar функция путы выводит назначенный символ stdout, Дополнительная информация об этом может быть нашел здесь, и ты должен вместо просто tolower char:

string makelower(string text)
{
int iter = 0;
char cha;
while (text[iter])
{
tolower(text[iter]);
iter++;
}
return(text);
}

Делая ваш полный Программа, как это (я также сделал код более эффективным):

#include "stdafx.h"#include <iostream>
#include <ctype.h>
#include <string>
#include <cstdlib>
using namespace std;

string makelower(string text)
{
int iter = 0;
while (text[iter])
{
tolower(text[iter]);
iter++;
}
return(text);
}

int main()
{
string a;
cin >> a;
a = makelower(a);
cin >> a;
}

#include <string> отсутствовал, что помешало скомпилировать код при правильной проверке, поэтому я добавил его. Удалите, если он у вас уже есть.

0
По вопросам рекламы [email protected]