Получение другого вывода с помощью printf и cout - C ++

У меня есть строка, которую я пытаюсь распечатать. когда я использовал cout , он выводит отлично, но использование printf оставляет его искаженным.

Вот код:

int main ( int argc, char *argv[] )
{
    // Check to make sure there is a single argument
    if ( argc != 2 )
    {
        cout<<"usage: "<< argv[0] <<" <filename>\n";
        return 1;
    }

    // Grab the filename and remove the extension
    std::string filename(argv[1]);
    int lastindex = filename.find_last_of("."); 
    std::string rawname = filename.substr(0, lastindex);

    cout << "rawname:" << rawname << endl;
    printf("rawname: %s", rawname);

}

cout дает мне "rawname" : file "
printf дает мне "rawname:", а затем кучу волнистых символов

17
задан ROMANIA_engineer 11 October 2017 в 06:20
поделиться