Автор Тема: Как использовать скомпилированные программы?  (Прочитано 7811 раз)

Оффлайн xdsl

  • Участник
  • *
  • Сообщений: 255
C++ был задумам Страуструпом как  ООП надстройка над C. В основе C++ лежит С. Классическую программу на С
#include <stdio.h>
int main ()
{
 puts("hello!");
 return 0;
}
скомпилировать можно и с помощью gcc и и с помощью g++.

А вот программу на С++
#include <iostream>
int main ()
{
 std::cout << "hello!";
 return 0;
}
только с помощью g++



Оффлайн Leontev

  • Участник
  • *
  • Сообщений: 16
Возникла проблема при использовании setw.

//ex9       //Данная программа выводит таблицу
# include <iostream>
# include <iomanip>
using
namespace std;

int main()
{setiosflags (ios::left);

cout  << setw (9) << "Фамилия" << setw(15) <<"Имя" << setw(30) << "Улица"<< setw (35) << "Город" << endl
<< setw (9) << "Петров" << setw(15) << "Николай" << setw(30) << "Ореховая 10"<< setw (35) << "Москва";
return 0; }

В результате получаю   :o
Фамилия                Имя                        Улица                                    Город
Петров Николай           Ореховая 10                       Москва

Почему так получается?

Оффлайн xdsl

  • Участник
  • *
  • Сообщений: 255
Потому-что UTF-8, на каждый нацсимвол - от 2 до 4 (потенциально до 6) байт. На русские буквы - по два байта. Поэтому пользуйтесь wcout вместо cout:

//ex9       //Данная программа выводит таблицу
# include <iostream>
# include <iomanip>
using
namespace std;

int main()
{setiosflags (ios::left);

locale::global(locale("ru_RU.utf8"));

wcout  << setw (9) << L"Фамилия" << setw(15) <<L"Имя" << setw(30) << L"Улица"<< setw (35) << L"Город" << endl
  << setw (9) << L"Петров" << setw(15) << L"Николай" << setw(30) << L"Ореховая 10"<< setw (35) << L"Москва"<<endl;

return 0;

}


 

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
one.o - файл проекта, несет в себе нужную информацию для компилятора.
Нет, это объектный файл. Промежуточный результат компиляции.

Оффлайн Leontev

  • Участник
  • *
  • Сообщений: 16
Я правильно понимаю, что команда

 locale::global(locale("ru_RU.utf8"));

Подключает из файла global кириллическую кодировку, а буквы 'L' указывают на её использование?

Ещё, помню, чге-то такую вещь видел
# include <locale>
...........
..........
int main()
{
global(locale("ru_RU.utf8"));
.......
........
     }

Оффлайн xdsl

  • Участник
  • *
  • Сообщений: 255
Я правильно понимаю, что команда

 locale::global(locale("ru_RU.utf8"));

Подключает из файла global кириллическую кодировку,
Неправильно, изучаем ООП вообще и класс locale в частности: http://www.cplusplus.com/reference/std/locale/locale/

а буквы 'L' указывают на её использование?
Неправильно, изучаем нововведения в C++0x вообще и новые строковые литералы в частности: http://en.wikipedia.org/wiki/C%2B%2B0x#New_string_literals