Witam,
Mam małe proste pytanie, mianowicie w jaki sposób mogę wyświetlić napis w consoli bez znaków specjalnych?
np. mam coś takiego:
cout<<"\nic\tam\"<<endl;
chciałbym by został wyświetlony dokładnie napis "\nic\tam", lecz bez żadnych modyfikacji tekstu
Ustalmy pewne fakty:
cout<<"\nic\tam\"<<endl;
Cout wypisuje dokładnie to, co mu wysłałeś. Nie zmienia znaków w żaden sposób.
Może jakiś mały przykład:
#include <iostream>
using namespace std;
int main()
{
string a = "\nic";
string b = "\\nic";
cout << a.size() << endl;
cout << b.size() << endl;
}
Po uruchomieniu:
3
4
Wniosek: napis "\nic" to napis składający się z trzech znaków - \n, i, c.
Napis "\nic" to napis składający się z czterech znaków - , n, i, c.
Czyli znaki typu '\n', '\t', etc są zamieniane na etapie kompilacji, a zamiast nich pojawiają się inne znaki, których nie można wstawić z powodów składniowych Nie możesz napisać na przykład string a = "
nic";, więc musisz dać \n zamiast entera.
Co z tego jeszcze wynika - że jeśli na przykład stworzysz plik w notatniku i napiszesz w nim "\nic", wczytasz ten plik do programu i wypiszesz, na konsoli pojawi się dokładnie zawartość tego pliku, czyli "\nic".
Albo:
#include <iostream>
using namespace std;
int main()
{
string a = " ";
a[0] = '\\';
a[1] = 'n';
a[2] = 'i';
a[3] = 'c';
cout << a << endl;
}
Wypisze, dosłownie, "\nic".
Ok, nie mam pomysłu jak to jeszcze wytłumaczyć, mam nadzieję że zrozumiałeś co chcesz zrobić i dlaczego to zły pomysł...