2015-07-08 3 views
0

Я совершенно новичок в Rust, и на самом деле только что начал сегодня. (Для тех, кто видел мой предыдущий удаленный вопрос, у вас есть самые искренние извинения.)Чтение части строки

Я просто пытаюсь создать простое приложение, чтобы улучшить свои навыки, но я встречаю проблему. Мне нравится создавать что-то, где вы можете просто набирать материал, а для тех, кто знает dunnet, начинайте каждую строку с двумя большими знаками.

Но я действительно не узнал, как читать биты после двух знаков. Я искал в Google и StackOverflow, но это лучшее, что я получил:

//Starting a line 
fn start(){print!(">>");} 

//Seeking input and saving input 
fn line_init() -> String 
{ 
    use std::io; 
    use std::io::BufRead; 
    start(); 
    let mut input = String::new(); 
    let stdin = io::stdin(); 
    stdin.lock().read_line(&mut input).unwrap(); 
    input 
} 

//Main function 
fn main() { 
    loop 
    { 
     print!("{}", line_init()); 
    } 
} 

Но, конечно же, пользовательский ввод линии земли на новой линии, которая не является именно то, что я хочу. Это версия C++ от чего я хочу (на самом деле, я просто дублировать мой проект C++ в Rust):

cout << ">>"; 
string input; 
getline(cin, input); 

К сожалению, что этот пост становится немного долго!

+0

Почему это помечена, как C++? – NathanOliver

+0

К сожалению, просто авария. –

+0

Я думаю, что это дубликат ... Я никогда не нашел эту статью раньше. Спасибо, @ker! И снова, извините за мои плохие объяснения. Должен ли я удалить этот вопрос или что? И для ответа я неправильно понял его ответ. –

ответ

0

Вы имеете в виду, что пользователь видит на консоли что-то вроде следующего?

hello 
>> 

вместо

>> hello 

?

В этом случае проблема заключается в том, что Rust stdout по умолчанию является строковым буфером, поэтому, если вы не пишете новую строку, на консоль ничего не будет напечатано.

Вы должны очистить стандартный вывод после того, как вы напишете префикс строки:

fn start(){ 
    print!(">>"); 
    io::stdout().flush().unwrap(); 
} 
+0

Извините, но я до сих пор не понимаю, что вы пытаетесь передать. Моя версия функции 'start()' выше делает соответствующий фрагмент вашей программы Ruste точно так же, как часть кода C++, вот что я предполагал, что вы хотите. Пожалуйста, исправьте свой вопрос, если это не так. –

+0

Спасибо! Я не понял вашу вещь, но теперь я понимаю, что второй пример - это то, что пользователь видит _meant_, правильно? –

+0

Ну, если вы так выразились, я думаю, да, это так. –

Смежные вопросы