2016-05-09 4 views
-2

Так, например, я пытался сделать прокрутку текста на экране; ч - он - Хель - ад - приветMy substr() не подходит по вашему запросу

#include <iostream> 
#include <stdlib.h> 


using namespace std; 

int main() 
{ 
    string text = "Welcome to the Password Vault!"; 
    int x; 
    for (x = 0; x < text.length(); x++) { 
     cout << text.substr(x,x); 
     _sleep(0100); 
    } 
    return 0; 
} 

Он выводит:

 
elccomome me toe to t to theto the Po the Pas the Passwthe Passworhe Password e Password Va Password VaulPassword Vault!assword Vault!ssword Vault!sword Vault!word Vault!ord Vault!rd Vault!d Vault! Vault!Vault!ault!ult!lt!t!! 
Process returned 0 (0x0) execution time : 1.961 s 
Press any key to continue. 

Я хотел выхода:

 
Welcome to the password vault! 

Пожалуйста, помогите мне!

+0

Обычно вам нужно отправить символ, чтобы переместить курсор обратно в начало строки, например: '\ r'. – tadman

+1

Как вы знаете, C++ 11 имеет стандартную функцию 'std :: this_thread :: sleep_for'. И 0100 является восьмеричным литералом для 4, а не значением 100. – chris

+0

Нет '#include '? – CinCout

ответ

4

Вы не только меняете начальную позицию, но также меняете длину длины подстроки, которую хотите получить, что является вторым аргументом. Если вы просто хотите получить по одному символу за раз, второй аргумент должен быть 1.

См., Например, this substr reference для получения дополнительной информации.

+0

Спасибо! Я, хотя (x, x), выполнял бы только x – user3051697

1

Это потому, что для функции substr() funtion требуются два аргумента, а именно начальная позиция строки и размер строки для печати. Поэтому на первой итерации, когда выполняется substr (0,0), а на другом итерационном субстрате (1,1) печатается «e» 3-я итерационная субстрат (2,2) печатает «lc» substr (3,3) - "com" и т. д.

2

Вы используете substr неправильно. Вы должны заменить второй параметр (x) на 1. Второй параметр - количество символов, которые вы хотите «получить». так что делайте text.substr(x,1); , и все будет установлено :)